package com.brillilab.service.core.user;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.brillilab.common.entity.PageVo;
import com.brillilab.domain.po.user.UserInviteAudit;
import com.brillilab.domain.vo.user.UserInviteAuditVo;

import java.util.List;

/**
 * <p>
 * 用户邀请审核表 服务类
 * </p>
 *
 * @author zlb
 * @since 2019-06-26
 */
public interface IUserInviteAuditService extends IService<UserInviteAudit> {

    UserInviteAudit insert(UserInviteAudit labApply);

    boolean updateById(UserInviteAudit labApply);

    UserInviteAudit selectById(Long id);

    List<UserInviteAudit> selectListByState(Integer state);

    PageVo<UserInviteAudit> selectPageVo(Page<UserInviteAudit> page, Wrapper<UserInviteAudit> wrapper);

    /**
     * 通过 mobile 查找用户
     * @param mobile 手机号
     * @param state 申请状态 (0待审核 1审核通过 2审核未通过)
     * @return
     */
    UserInviteAudit selectUser(String mobile,Integer state);

    /**
     * 通过申请状态查询申请表
     * @param applyState
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageVo<UserInviteAudit> selectByState(Integer applyState, int pageNum, int pageSize);

    /**
     * 通过申请状态查询成员申请表
     * @param applyState
     * @param mobile
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageVo<UserInviteAuditVo> selectToState(Integer applyState, String mobile, int pageNum, int pageSize);

    /**
     * 最早一条审核通过的
     * @param labId
     * @param mobile
     * @return
     */
    UserInviteAudit selectFirstAuditPassOne(Long labId,String mobile);

    List<UserInviteAudit> selectList(Long labId,String mobile);

    UserInviteAudit selectByLabIdAndMobile(Long labId,String mobile);

    List<UserInviteAudit> selectListByMobile(String mobile,boolean isAsc);
}
